The invention relates to printing. More particularly, the invention relates to a printer controller that allows color printers to interpret, render, and print graphic files efficiently.
High resolution (600 dpi and up) contone (each color channel is 8-bit encoded) printers typically must be shipped with a large size random access memory, or RAM, to meet performance criteria. This memory requirement drives up the overall cost of such printers. Presently, software or hardware based mechanisms somewhat address this issue by providing compression methods and/or line or band rendering techniques. See, for example, B. Ethington, J. Gostomski, J. Minnick, C. Songer, Printer With High Bandwidth Compression Architecture, U.S. pat. No. 5,704,022 (Dec. 30, 1997); P. Wood, S. Kochan, Printing System and Method, U.S. pat. No. 5,150,454 (Sep. 22 1992); F. Deschuytere, Lossy and Lossless Compression In Raster Image Processor, U.S. pat. No. 5,552,898 (Sep. 3, 1996); M. Herregods, R. Baeten, G. Noppen, High Quality Multilevel Halftoning For Colour Images With Reduced Memory Requirements, European Patent Specification No. 709,012 (Nov. 19, 1997); and M. Herregods, D. Tjantele, Variable data filed in a pages description language, European Patent Specification No. 703,524 (Jan. 8, 1997).
These various approaches allow the processing of complex color files in reduced memory configurations, but they often dramatically decrease speed performance due to the need to compress and decompress and/or band render such color files.
It is therefore highly desirable to provide a mechanism that allows color printers to render color or black and white files in a reduced memory configuration, and in a time efficient fashion.
The invention provides a mechanism that allows color printers to render color or black and white files in a reduced memory configuration, and in a time efficient fashion. In a preferred embodiment of the invention, an incoming data file representing a page to be printed is provided to an interpreter. In the data file there is an object that is to be rendered by the interpreter. The interpreter requests an uncompressed representation of a patch (i.e. A portion of the page to be printed), where the patch intersects with the object that is to be rendered. A patch cache holds a collection of patches of different locations and different types. If the requested patch is not in the patch cache, room is made in the patch cache by compressing the least recently used patch data. The requested patch is then decompressed into the patch cache from a compressor. The compressor holds a collection of compressed patch data that tiles the entire page. Each patch is compressed independently from one another. Thus, the logical page representation is broken down into patches, where the breakdown is known to the interpreter and the compressor. A stitcher uses a stitching process to turn the patch page representation into a compressed line, band, or full page representation. The representation is stored in a frame buffer. Dedicated hardware and/or software decompresses the frame buffer on-the-fly and places colored dots on the printed page.